package com.hyxt.dao;

import redis.clients.jedis.Jedis;

import java.util.Map;

/**
 *
 * <p>
 *redis对外开放的接口类
 * </p>
 *
 * @author zhangcx
 * @创建时间：2017年11月15日15:09:57
 * @产品: 2.0Pass
 * @version： V1.0
 */
public interface RedisServiceDAO {
    /**
     * 存储String
     * @param key
     * @param value
     * @return
     */
    public boolean setString(String key, String value, Integer dbIndex);

    /**
     * 存储对象
     * @param key
     * @param value  对应对象的实体类
     * @return
     */
    public boolean setObject(String key, Object value, Integer dbIndex);

    /**
     * 定时过期存储String
     * @param key
     * @param seconds 时长（单位：秒）
     * @param value
     * @return
     */
    public boolean setString(String key, Integer seconds, String value, Integer dbIndex);

    /**
     * 根据KYE删除数据
     * @param key
     * @return
     */
    public boolean delete(String key, Integer dbIndex);

    /**
     * 根据key得到相关数据
     * @param key
     * @return
     */
    public String getString(String key, Integer dbIndex);

    /**
     * 根据key得到相关的实体类
     * @param key
     * @param clazz
     * @param <T>
     * @return
     */
    public <T> T getObject(String key, Class<T> clazz, Integer dbIndex);

    /**
     * 向指定频道中发送消息
     * @param channel 对应的频道
     * @param message 消息
     */
    public void sendMessage(String channel, String message);

    /**
     * redis map类型的存储
     * @param key  reids关键字
     * @param map   存储map
     * @param dbIndex  redisDB
     * @return
     */
    public boolean setMap(String key, Map<String,String> map,Integer dbIndex);

    /**
     * redis获取map值
     * @param key  redis关键字
     * @param dbIndex  redisDB索引
     * @return
     */
    public Map getMap(String key,Integer dbIndex);
}
